// 微信授权后端服务器主文件
const express = require("express");
const cors = require("cors");
const rateLimit = require("express-rate-limit");
const path = require("path");

// 导入路由
const authRoutes = require("./routes/auth");
const healthRoutes = require("./routes/health");

const app = express();

// 中间件配置
/* app.use(
  cors({
    origin: process.env.FRONTEND_URL || true,
    credentials: true,
  })
); */

app.use(express.json({ limit: "10mb" }));
app.use(express.urlencoded({ extended: true }));

// 静态文件服务 - 提供前端页面
app.use(express.static(path.join(__dirname, "../public")));

// 请求频率限制
const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15分钟
  max: 100, // 限制每个IP 15分钟内最多100个请求
  message: {
    error: "请求过于频繁，请稍后再试",
  },
  standardHeaders: true,
  legacyHeaders: false,
});

app.use(limiter);

// API路由
app.use("/api/auth", authRoutes);
app.use("/api", healthRoutes);

// 默认路由 - 提供前端页面
app.get("/", (req, res) => {
  res.sendFile(path.join(__dirname, "../public/index.html"));
});

// 微信授权页面路由
app.get("/auth", (req, res) => {
  res.sendFile(path.join(__dirname, "../public/wechat-redirect.html"));
});

// 演示页面路由
app.get("/demo", (req, res) => {
  res.sendFile(path.join(__dirname, "../public/test-demo.html"));
});

// 404处理
app.use((req, res) => {
  res.status(404).json({
    error: "接口不存在",
    path: req.originalUrl,
  });
});

// 全局错误处理中间件
app.use((error, req, res, next) => {
  console.error("服务器错误:", error);

  res.status(500).json({
    error: "服务器内部错误",
    message:
      process.env.NODE_ENV === "production" ? "服务器错误" : error.message,
  });
});

// 启动服务器
const PORT = process.env.PORT || 8080;

app.listen(PORT, () => {
  console.log(`🚀 微信授权服务器运行在端口 ${PORT}`);
  console.log(`📱 前端页面: http://localhost:${PORT}`);
  console.log(`🔗 授权页面: http://localhost:${PORT}/auth`);
  console.log(`📋 演示页面: http://localhost:${PORT}/demo`);
  console.log(`💚 健康检查: http://localhost:${PORT}/api/health`);

  // 检查配置
  require("./config/wechat").checkConfig();
});

module.exports = app;
